const userinfo = require("../database/userinfo");
const uuid = require("uuid");
const md5 = require("md5");
const xlsx = require("node-xlsx");
const fs = require("fs");
const path = require("path");

module.exports = async (req, res)=>{
  const file = req.files[0];
  if( !file ){
    res.send({
      code:0,
      msg:"缺少必传文件",
      data:null
    })
    return;
  }

  // 处理文件名，准备改名
  const oldName = path.join(__dirname, "..", file.path);
  const newName = oldName + "-" + file.originalname;
  try{
    // 改名
    fs.renameSync(oldName, newName);
    // 准备解析数据
    const arr = [];   // 向数据库存储的数据
    const repeatTel = [];   // 重复的手机号
    // 解析上传过来的xlsx文件，及数据
    const fileData = xlsx.parse(newName)[0].data;
    // 遍历数据，获取每个独立的信息
    for(let i=1;i<fileData.length;i++){
      // 解析出的手机号
      const tel = fileData[i][0]+"";
      // 根据手机号读取数据库
      const userData = await userinfo.find({ tel })
      // 判断手机号是否存在
      if(userData.length < 1){
        // 不存在，添加到要插入的数据信息内
        arr.push({
          userId: "user-" + uuid.v1(),
          tel,
          password: md5(tel.slice(-6)),
          nickName:"",
          email:"",
          birth:0,
          registerTime:Date.now(),
          loginTime:Date.now(),
          power:0,
          avatar: ""
        });
      }else{
        // 存在，插入到重复手机号内
        repeatTel.push(tel);
      }
    }
    // 插入到数据库
    await userinfo.insertMany( arr );
    // 删除上传的xlsx文件
    fs.unlinkSync(newName);
    // 向前端响应结果
    res.send({
      code: 1,
      msg: "导入成功，以下手机号已存在",
      data: repeatTel
    });
  }catch(err){
    res.send({
      code: 2,
      msg: "数据库出错",
      data: err.toString()
    })
  }
}

// {
//   fieldname: 'importFile',
//   originalname: 'userinfo_register.xlsx',
//   encoding: '7bit',
//   mimetype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
//   destination: './upload',
//   filename: '72da2fb2f4870e99ce249038cf14dc18',
//   path: 'upload/72da2fb2f4870e99ce249038cf14dc18',
//   size: 8707
// }